/**
 * 
 */
package org.assembly.huargo.model;

/**
 * @author emanuel
 *
 */
public abstract class Entity {
	
	@Override
	public boolean equals(Object obj) {
		
		if (this == obj) {
			return true;
		}
		
		if (obj == null) {
			return false;
		}
		
		if (this.getClass().isAssignableFrom(obj.getClass())){
			return bussinessEquals(obj);
		}
		
		return false;
	}

	/**
	 * Metodo que tienen que sobre escribir cada una de las entidades
	 * para demostrar su identidad
	 * 
	 * @param obj
	 * @return true si son iguales de los contrario false.
	 */
	protected abstract boolean bussinessEquals(Object obj);

}
